package logica.control;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.concurrent.ForkJoinPool;
import presentacion.dialogo.Mensaje;
import static java.nio.file.FileVisitOption.FOLLOW_LINKS;

public class ActualizarBD {
	private ListaArchivosTxt listaArchivosTxt;

	public ActualizarBD(String dir) {
		listaArchivosTxt = new ListaArchivosTxt();

		try {
			Files.walkFileTree(Paths.get(dir), EnumSet.of(FOLLOW_LINKS), 3,
					listaArchivosTxt);
		} catch (SecurityException | IOException e) {
			System.out.println("Se genero el siguiente error: " + e);
		}

		ArrayList<String> lista = listaArchivosTxt.getListaArchivosTxt();
		if (!lista.isEmpty()) {

			ForkJoinPool pool = new ForkJoinPool(Runtime.getRuntime()
					.availableProcessors());

			for (String ruta : lista) {
				pool.execute(new ProcesadorArchivoTxt(ruta));
				//System.out.println(pool.toString());
			}
			pool.shutdown();
			new InsertIntoH2(ProcesadorArchivoTxt.getArtistas());

		} else {
			new Mensaje("La carpeta se encuentra vacia", Mensaje.advertencia);
		}

	}
}
